package com.acheli.rideable.functionLathes.component.engine;

import com.acheli.rideable.entites.RideableEntity;


public interface AbstractEngine {
    //attributes
    void setRevolutionSpeed(double revolutionSpeed);
    double getRevolutionSpeed();
    void setReadyRevSpeed(double readyRevSpeed);
    double getReadyRevSpeed();
    void setMaximumRevSpeed(double maximumRevSpeed);
    double getMaximumRevSpeed();
    void setRevDeltaPerTick(double revDeltaSpeed);
    double getRevDeltaPerTick();
    void setEngineTimeout(int engineTimeout);
    int getEngineTimeout();
    void setEngineTimeoutThreshold(int engineTimeoutThreshold);
    int getEngineTimeoutThreshold();
    void setEngineTimeoutCooldown(int engineTimeoutCooldown);
    int getEngineTimeoutCooldown();

    //functions
    void engineSwitch();
    void engineRunning();
    void onEngineIsReady();
    void onEngineMaxed();
    void engineStopping();
    void onEngineClosed();

    void setEngineStatus(boolean engineStatus);

    boolean getEngineStatus();
    void engineStatusChanging();
}
